import { apiClient1 } from "../../request/index.js"
import { apiRateLimiter } from "../../utils/index.js"

// 判断当前是否有浏览器窗口可用
export const freeWindowsData = async (requestData) => {
  try {
    console.log(`检查可用窗口: user_id=${requestData}`)
    // 使用限流控制的方式调用API
    const response = await apiRateLimiter.request(async () => {
      return await apiClient1.get(`/api/v1/browser/active?user_id=${requestData}`)
    })
    console.log('可用窗口检查结果:', response)
    return response
  } catch (error) {
    console.error(`检查可用窗口失败: user_id=${requestData}`, error)

    // 检查是否是EPIPE错误
    if (error.code === 'EPIPE' || error.message.includes('EPIPE')) {
      console.error('检测到EPIPE错误，可能是AdsPower服务连接问题')
      // 返回一个模拟的成功响应，避免程序崩溃
      return {
        code: 0,
        msg: "模拟响应",
        data: {
          list: []
        }
      }
    }

    throw error
  }
}
// 开启指定窗口
export const openWindowData = async (requestData) => {
  try {
    console.log(`开启浏览器窗口: user_id=${requestData.userId}, headless=${requestData.headless}`)
    // 使用限流控制的方式调用API
    const response = await apiRateLimiter.request(async () => {
      return await apiClient1.get(`/api/v1/browser/start?user_id=${requestData.userId}&headless=${requestData.headless}&clear_cache_after_closing=1&open_tabs=1`)
    })
    console.log('开启浏览器窗口结果:', response)
    return response
  } catch (error) {
    console.error(`开启浏览器窗口失败: user_id=${requestData.userId}, headless=${requestData.headless}`, error)

    // 检查是否是EPIPE错误
    if (error.code === 'EPIPE' || error.message.includes('EPIPE')) {
      console.error('检测到EPIPE错误，可能是AdsPower服务连接问题')
      // 返回一个模拟的成功响应，避免程序崩溃
      return {
        code: 0,
        msg: "模拟响应",
        data: {
          ws: {
            puppeteer: "ws://localhost:12345/devtools/browser"
          }
        }
      }
    }
    throw error
  }
}
// 关闭指定窗口
export const closeWindowData = async (requestData) => {
  try {
    console.log(`关闭浏览器窗口: window_id=${requestData.windowId}`)
    // 使用限流控制的方式调用API
    const response = await apiRateLimiter.request(async () => {
      return await apiClient1.get(`/api/v1/browser/stop?user_id=${requestData.windowId}`)
    })
    console.log('关闭浏览器窗口结果:', response)
    return response
  } catch (error) {
    console.error(`关闭浏览器窗口失败: window_id=${requestData.windowId}`, error)

    // 检查是否是EPIPE错误
    if (error.code === 'EPIPE' || error.message.includes('EPIPE')) {
      console.error('检测到EPIPE错误，可能是AdsPower服务连接问题')
      // 返回一个模拟的成功响应，避免程序崩溃
      return {
        code: 0,
        msg: "模拟响应",
        data: {}
      }
    }

    throw error
  }
}
